import { Controller } from 'egg';
import {Op} from 'sequelize'
export default class  SolutionController extends Controller {
    
    //解决方案类型列表接口
    
    /**
     * @api {get} /solution/cate_list 解决方案类型列表
     * @apiName solutionCateList
     * @apiGroup Gaode
     * @apiVersion 1.0.0
     * @apiDescription 解决方案类型列表
     * @apiParam {Number} is_more  是否展示更多0否1是 默认0
     * @apiParam {Number} cur_index  默认展示长度(必传)
     * @apiParam {Number} category_id  类型ID(is_more为1时使用)
     * @apiSuccess {Number} code 返回状态码 0失败  200成功
     * @apiSuccess {String} message 返回状态对应提示消息
     * @apiSuccess {Object[]} data 查询数组集合
     * @apiSuccess {String} data.category_name 类型名称
     * @apiSuccess {String} data.category_id 解决方案类型ID
     * @apiSuccess {Object[]} data.solution_list 解决方案列表长度为3
     * @apiSuccess {String} data.solution_list.solution_id 解决方案ID 
     * @apiSuccess {String} data.solution_list.solution_name 解决方案名称 
     * @apiSuccess {Object[]} data.sub_list 值类型列表
     * @apiSuccess {String} data.sub_list.sub_id 子类型ID 
     * @apiSuccess {String} data.sub_list.sub_name 子类型名称 
     * @apiSuccess {Object[]} more 更多的解决方案数据(is_more为1时则使用)
     * @apiSuccess {Number} more.solution_id 解决方案ID
     * @apiSuccess {Number} more.solution_name 解决方案名称
     */
    /**
     * 产品中心类型列表：
     * 按照产品查询所有分类列表，完成返回所有的产品的类型列表
     */
    async cate_list(){
        const {ctx,app}= this;
        const {SOLUTION_CATE_ARR}=app.config;
        const {query} = ctx.request;
        const {Solution} = app.model;
        try {
            if(!parseInt(query.is_more)){
                let condition={
                    category_name:{
                        [Op.notIn]:SOLUTION_CATE_ARR
                    }
                }
                let list=await ctx.service.common.product_cate_list(Solution,query,condition,'solution')
                ctx.body=ctx.helper.success_result("查询成功",list);
            }else{
                if(!query.category_id){
                    return ctx.body=ctx.helper.error_result("需要指定类型ID"); 
                }
                let result=await Solution.findAll({
                    where:{
                        category_id:query.category_id
                    },
                    offset:parseInt(query.cur_index),
                    order:[['create_time','DESC']]
                })
                result=JSON.parse(JSON.stringify(result));
                return ctx.body={
                    code:200,
                    message:'查询成功',
                    more:result,
                    data:[]
                }
            }
        } catch (error) {
            console.log(error)
            return ctx.body=ctx.helper.error_result("查询失败")
        }
    }
    //解决方案列表接口
    /**
     * @api {get} /solution/list 解决方案列表
     * @apiName solutionList
     * @apiGroup Gaode
     * @apiVersion 1.0.0
     * @apiDescription 解决方案列表
     * @apiParam {Number} category_id  解决方案类型ID
     * @apiParam {Number} sub_id  解决方案子类型ID
     * @apiParam {Number} page  页面位置
     * @apiParam {Number} page_size  页面尺寸
     * @apiParam {Number} is_page  是否分页0否，1是
     * @apiSuccess {Number} code 返回状态码 0失败  200成功
     * @apiSuccess {String} message 返回状态对应提示消息
     * @apiSuccess {Object[]} data 查询结果结构
     * @apiSuccess {Number} data.solution_id 解决方案ID
     * @apiSuccess {String} data.solution_name 解决方案名称
     * @apiSuccess {String} data.solution_img 解决方案图片
     * @apiSuccess {String} data.solution_content 解决方案内容
     */
    /**
     * @api {get} /customer/list 客户列表 （暂未实现）
     * @apiName customerList
     * @apiGroup Gaode
     * @apiVersion 1.0.0 
     * @apiDescription 客户列表
     * @apiParam {Number} type  客户类型 1本科院校 2专科院校3远程教育
     * @apiSuccess {Number} code 返回状态码 0失败  200成功
     * @apiSuccess {String} message 返回状态对应提示消息
     * @apiSuccess {Object} data 客户列表
     * @apiSuccess {Object[]} data.customer_list 客户列表默认为type为1的客户数据
     * @apiSuccess {Number} data.customer_list.customer_id 客户支持ID
     * @apiSuccess {String} data.customer_list.customer_img 客户图片
     * @apiSuccess {String} data.customer_list.customer_name 客户名称
     * @apiSuccess {String} data.customer_list.customer_content 客户介绍
     * @apiSuccess {Object[]} data.types 客户类型数组
     * @apiSuccess {Number} data.types.type 客户类型
     * @apiSuccess {String} data.types.name 客户类型名称
     * 
     */
    async list(){
        const {ctx,app}= this;
        const {query} = ctx.request;
        const {Solution} = app.model;
        try {
            if(!query.category_id&&!query.sub_id){
                return ctx.body=ctx.helper.error_result("没有指定类型ID或子类型ID")
            }
            let condition={};
            if(query.category_id){
                condition['category_id']=query.category_id;
            }
            if(query.sub_id){
                condition['sub_id']=query.sub_id;
            }
            let solution_list=await ctx.service.common.product_list(Solution,condition,2,'solution');
            return ctx.body=ctx.helper.success_result("查询成功",solution_list) ;
        } catch (error) {
            
        }
        ctx.body=ctx.helper.error_result("查询失败")
    }
    //解决方案详情
    /**
     * @api {get} /solution/info 解决方案详情
     * @apiName solutionInfo
     * @apiGroup Gaode
     * @apiVersion 1.0.0
     * @apiDescription 解决方案详情
     * @apiParam {Number} solution_id  解决方案ID
     * @apiSuccess {Number} code 返回状态码 0失败  200成功
     * @apiSuccess {String} message 返回状态对应提示消息
     * @apiSuccess {Object} data 查询结果结构
     * @apiSuccess {String} data.solution_name 解决方案名称
     * @apiSuccess {String} data.solution_id 解决方案ID
     * @apiSuccess {Object[]} data.resource_list 解决方案资源列表
     * @apiSuccess {String} data.resource_list.resource_id 资源ID
     * @apiSuccess {String} data.resource_list.resource_name 资源名称
     * @apiSuccess {String} data.resource_list.resource_url 资源路径
     * @apiSuccess {String} data.resource_list.resource_content 资源内容
     * @apiSuccess {String} data.create_time 解决方案创建时间
     * 
     */
    async info(){
        const {ctx,app}= this;
        const {query} = ctx.request;
        const {Solution} = app.model;
        try {
            if(!query.solution_id){
                return ctx.body=ctx.helper.error_result("没有指定解决方案ID")
            }
            let condition={
                solution_id:query.solution_id
            };
            let list=await ctx.service.common.product_info(Solution,condition,2)
            return ctx.body=ctx.helper.success_result("查询成功",list) ;
        } catch (error) {
            console.log(error);
        }
        ctx.body=ctx.helper.error_result("查询失败")
    }
}

